//package com.hs.server.runnable;
//
//import com.google.protobuf.ByteString;
//import com.hs.grpc.*;
//import com.hs.server.config.MyConfig;
//import com.hs.server.domain.*;
//import com.hs.server.exception.GlobalException;
//import com.hs.server.mapper.ShYcrzxxbMapper;
//import com.hs.server.mapper.XbjcMapper;
//import com.hs.server.service.*;
//import com.hs.server.service.impl.JianyanHsServiceImpl;
//import com.hs.server.utils.SpringContextUtil;
//import io.grpc.StatusRuntimeException;
//import lombok.Data;
//import lombok.RequiredArgsConstructor;
//import lombok.SneakyThrows;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.collections.map.HashedMap;
//import org.apache.commons.lang3.StringUtils;
//
//import java.io.BufferedInputStream;
//import java.io.ByteArrayOutputStream;
//import java.io.IOException;
//import java.net.MalformedURLException;
//import java.net.URL;
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.*;
//import java.util.concurrent.TimeUnit;
//import java.util.stream.Collectors;
//
///**
// * @Description 资源审核控制模块
// * @Author: chenjiarui
// * @Date: 2021-07-19 8:57
// */
//@Data
//@RequiredArgsConstructor
//@Slf4j
//public class WorkCustomer2 implements Runnable {
//    private VehQueuexxb vehQueuexxb;
//    private ShResourcexx shResourcexx;
//    private JianyanHsServiceImpl jianyanService;
//
//    private final VehZnshinfoService vehZnshinfoService = SpringContextUtil.getBean(VehZnshinfoService.class);
//    private final VehQueuexxbService vehQueuexxbService = SpringContextUtil.getBean(VehQueuexxbService.class);
//    //WorkCustomer非单例，需要观察这个对象跟@Autowired注入进来的对象是否同一个，不同对象调用更新操作synchronized方法不会产生互斥
//    private final VehZnshzlzpxxService vehZnshzlzpxxService = SpringContextUtil.getBean(VehZnshzlzpxxService.class);
//    private final ShResourcexxService shResourcexxService = SpringContextUtil.getBean(ShResourcexxService.class);
//    private final ShItemConfigService shItemConfigService = SpringContextUtil.getBean(ShItemConfigService.class);
//    private final ShResourcexxRecordService shResourcexxRecordService = SpringContextUtil.getBean(ShResourcexxRecordService.class);
//    private final ShYcrzxxbMapper shYcrzxxbMapper = SpringContextUtil.getBean(ShYcrzxxbMapper.class);
//    private final MyConfig myConfig = SpringContextUtil.getBean(MyConfig.class);
//    private final XbjcMapper xbjcMapper = SpringContextUtil.getBean(XbjcMapper.class);
//    private final String imgPath = myConfig.imgPath;
//    private final int compareThreshold = myConfig.compareThreshold;
//
//    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//    private SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMdd");
//    private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
//
//    public WorkCustomer2(VehQueuexxb vehQueuexxb, ShResourcexx shResourcexx, JianyanHsServiceImpl jianyanService){
//        this.vehQueuexxb = vehQueuexxb;
//        this.shResourcexx = shResourcexx;
//        this.jianyanService = jianyanService;
//    }
//    @SneakyThrows
//    @Override
//    public void run() {
//        // 开始时间
//        long stime = System.currentTimeMillis();
//        log.info("服务器【"+shResourcexx.getIpdz() + "-" + shResourcexx.getShxcbh()+"】"+"获取到"+vehQueuexxb.getLsh()+"-"+vehQueuexxb.getZpzl()+"的审核权");
//        //存储本次审核的结果
//        int workResult = inspectExamine(vehQueuexxb,shResourcexx);
//        statistics(workResult,stime);
//    }
//
//    private void statistics(int workResult,long stime){
//        synchronized (WorkCustomer2.class){
//            if (workResult != 0 && workResult!=-1) {//有东西返回则证明有调用过服务器
//                log.info("服务器【"+shResourcexx.getIpdz()+ "-" + shResourcexx.getShxcbh()+"】"+"审核"+vehQueuexxb.getLsh()+"-"+vehQueuexxb.getZpzl()+"完成！");
//            }
//            //服务器出错，需要启动重连机制
//            if (workResult == 0) {
//                //todo 算法服务器挂了，将该算法服务器zt改成异常，该条作业审核状态重置为0，已让它下次能重新审
//                log.error("服务器【"+shResourcexx.getIpdz()+ "-" + shResourcexx.getShxcbh()+"】"+"审核"+vehQueuexxb.getLsh()+"-"+vehQueuexxb.getZpzl()+"出错！已将该服务器状态置为异常，请人工检查后再将其状态置为正常");
//                todoServiceExCeption(vehQueuexxb,shResourcexx);
//
//            }
//            //程序内部错误
//            if (workResult==-1){
//                log.error(vehQueuexxb.getLsh()+"-"+vehQueuexxb.getZpzl()+"审核过程中出现程序内部错误！");
//            }
//        }
//    }
//
//    /**
//     * @param vehQueuexxb
//     * @return 1-审核通过 4-建议人工 5-审核不通过 0-服务器出错，启用检测重连机制
//     * @throws ParseException
//     */
//    //@Transactional(rollbackFor = Exception.class)
//     int inspectExamine(VehQueuexxb vehQueuexxb,ShResourcexx shResourcexx){
//        String lsh = vehQueuexxb.getLsh();//流水号
//        String zpzl = vehQueuexxb.getZpzl();//照片种类
//        String parseGrpcBack = null;//调用parseGrpc方法返回
//        VehZnshzlzpxx vehZnshzlzpxx = null;
//        VehZnshinfo vehZnshinfo = null;
//        String zpurl = null;
//
//        try {
//            //查出检验信息
//            vehZnshinfo = vehZnshinfoService.GetVehZnshinfoByLsh(lsh);
//            vehZnshzlzpxx = vehZnshzlzpxxService.GetVehZnshzlzpxx(lsh, zpzl);
//            if (vehZnshzlzpxx!=null){
//                //调用grpc接口进行图片审核(重点)
//                if (vehZnshinfo!=null){
//                    zpurl = imgPath + vehZnshzlzpxx.getZpurl();
//                    vehQueuexxb.setZt("1");//审核中
//                    vehQueuexxbService.updateVehQueuexxb(vehQueuexxb);
//                    //写入审核开始时间
//                    vehZnshzlzpxx.setShkssj(formatter.parse(formatter.format(new Date())));
//                    parseGrpcBack = parseGrpc(shResourcexx,vehQueuexxb, vehZnshinfo, zpurl);
//                    if (parseGrpcBack.equals("-1")) {//服务器挂了
//                        log.error(vehZnshzlzpxx.getLsh() + "-" +vehZnshzlzpxx.getZpzl() + " Grpc接口调用失败");
//                        return 0;
//                    }
//                    synchronized (WorkCustomer2.class) {
//                        int shzcs = shResourcexxService.getShzcs(shResourcexx.getFwqbh());//审核总次数
//                        shzcs++;
//                        shResourcexx.setShzcs(String.valueOf(shzcs));
//                        shResourcexxRecordService.shzcsIncrease(shResourcexx);
//                    }
//                    //写入审核结束时间
//                    vehZnshzlzpxx.setShjssj(formatter.parse(formatter.format(new Date())));
//                    vehQueuexxb.setZt("4");//已审核，主要是为了延迟删除，/app/GetQueuexxb让此接口界面可以看到一眼审核通过的项
//                    vehQueuexxbService.updateVehQueuexxb(vehQueuexxb);
//                }
//            } else {
//                String exInfo = vehQueuexxb.getLsh()+"-"+vehQueuexxb.getZpzl()+"车辆照片信息为空!【检验】";
//                log.error(exInfo);
//                //todo 写进sh_ycrzxxb异常信息表
//                insertShYcrzxxb(lsh,shResourcexx,exInfo);
//                throw new GlobalException(exInfo);
//            }
//        }
//        catch (StatusRuntimeException e){
//            log.error("【StatusRuntimeException异常】",e);
//            return 0;
//        }
//        catch (Exception ex) {
//            synchronized (WorkCustomer2.class) {
//                int clcs = shResourcexxService.getclcs(shResourcexx.getFwqbh());//重连次数
//                //标记服务器资源为不正常
//                clcs++;
//                shResourcexx.setClcs(String.valueOf(clcs));
//                shResourcexxRecordService.clcsIncrease(shResourcexx);
//            }
//
//            if (vehQueuexxbService.getVehQueuexxb(lsh).size()!=0){//加判断是为了防止链接访问不了删了该lsh的作业数据后导致这里可能会出现异常情况
//                vehQueuexxb.setZt("2");//审核出错
//                vehQueuexxbService.updateVehQueuexxb(vehQueuexxb);
//            }
//
//            String exInfo = vehQueuexxb.getLsh()+"-"+vehQueuexxb.getZpzl()+"【检验审核出错】"+ ex;
//            log.error(vehQueuexxb.getLsh()+"-"+vehQueuexxb.getZpzl()+"【检验审核出错】系统异常:",ex);
//            //todo 写进sh_ycrzxxb异常信息表
//            insertShYcrzxxb(lsh,shResourcexx,exInfo);
//            return -1;
//        } finally {
//            try {
//                jianyanService.getChannel().shutdown().awaitTermination(3, TimeUnit.SECONDS);
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//            //设置服务器为空闲状态
//            synchronized(WorkCustomer2.class) {
//                shResourcexx.setSfkx("1");//设置服务器资源为空闲状态
//                shResourcexxService.updateResourcexx(shResourcexx);
//            }
//        }
//        //处理btgjyx字段（分不合格检验项和grpc识别返回,'---'分隔）
//        String [] res;
//        String btgjyx = "";
//        String grpcBack = "";
//        if (StringUtils.isNotBlank(parseGrpcBack)){
//            res = parseGrpcBack.split("---");
//            //log.info("【parseGrpcBack】"+parseGrpcBack);
//            btgjyx = res[0];
//            grpcBack = res[1];
//        }
//
//        synchronized (WorkCustomer2.class){
//            //处理审核结果，并返回结果到本地数据库
//            int shzt = isQualified(btgjyx);
//            //审核不通过原因（中文显示）
//            if (StringUtils.isNotBlank(btgjyx))
//                vehZnshzlzpxx.setShbtgyy(getZhJyx(btgjyx));//审核不通过项
//            else
//                vehZnshzlzpxx.setShbtgyy("");//如果是第二次审核要把第一次不合格原因清空，不然会影响到关联判定
//            vehZnshzlzpxx.setSbnr(grpcBack);//保存grpc识别内容
//            log.info(lsh+"-"+zpzl+"审核状态："+shzt);
//            vehZnshzlzpxx.setShzt(Integer.toString(shzt));//审核结果判定
//            vehZnshzlzpxxService.UpdateZnshzlzpxx(vehZnshzlzpxx);
//
//            int needCount = vehZnshzlzpxxService.getNeedCount(lsh);//获取该lsh需要审核的照片数量
//            int alreadyCount = vehZnshzlzpxxService.getAlreadyByLsh(lsh);//获取该lsh已经审核过的照片数量
//            //没有就开始判定整车vehZnshinfo的审核结果
//            if (needCount == alreadyCount) {
//                //todo 获取该流水号下所有图片（除了需要关联的zpzl）的审核状态
//                List<String> shztList = vehZnshzlzpxxService.getShztsByLshWithoutLinked(lsh,"0111,0112,0348,0322,0321,0352,0342,0344");
//
//                //todo 获取0111-0112-关联三角架后的shzt结果
//                Map<String,String> tripodMap = tripodHandle(lsh);
//                //todo 获取0348-0322-制动工位照片关联尾灯后的shzt结果
//                Map<String,String> taillightMap = taillightHandle(lsh);
//                //todo 获取0321-0352-灯光工位照片关联车牌号后的shzt结果
//                Map<String,String> plateMap = plateHandle(lsh);
//                //todo 获取0321-0352-灯光工位照片关联大灯后的shzt结果
//                Map<String,String> headlightsMap = headlightsHandle(lsh);
//                //todo 获取0342-0344-底盘动态关联车牌号后的shzt结果
//                Map<String,String> dynamicMap = dynamicHandle(lsh);
//
//                //删除作业数据
//                try {
//                    Thread.sleep(1500L);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//                vehQueuexxbService.delWork(lsh);
//
//                Map<String,String> linkedMap = new HashedMap();
//                linkedMap.putAll(tripodMap);
//                linkedMap.putAll(taillightMap);
//                linkedMap.putAll(plateMap);
//                //0321-0352 shzt,map覆盖
//                linkedMap.putAll(headlightsMap);
//                linkedMap.putAll(dynamicMap);
//                log.info("【"+lsh+"】最终审核结果："+ linkedMap);
//                //todo 所有的shzt结果都装在一个list
//                shztList.addAll(linkedMap.values().stream().collect(Collectors.toList()));
//
//                //todo 获取不通过的zpzl
//                List<String> linked_zpzl = linkedMap.entrySet().stream().filter(map->map.getValue().equals("5")).map(map-> map.getKey()).collect(Collectors.toList());
//                List<String> btg_zpzl = vehZnshzlzpxxService.getBtgZpzl(lsh,"0111,0112,0348,0322,0321,0352,0342,0344");
//                btg_zpzl.addAll(linked_zpzl);
//                //设置审核不通过的zpzl
//                vehZnshinfo.setShbtgx(btg_zpzl.stream().collect(Collectors.joining(",")));
//                vehZnshinfo.setCzzt("1");//设置为已检验
//                //不通过
//                if (shztList.contains("5")) {
//                    vehZnshinfo.setShzt("5");
//                    vehZnshinfoService.updateVehZnshinfo(vehZnshinfo);
//                    xbjcMapper.updateVehFlowYshbj(vehZnshinfo.getLsh().substring(0,20),"2");
//                    return 5;
//                }
//
//                //通过
//                String shzts = String.join(",", shztList);
//                if (!shzts.contains("4") && !shzts.contains("5")) {
//                    vehZnshinfo.setShzt("1");
//                    vehZnshinfoService.updateVehZnshinfo(vehZnshinfo);
//                    xbjcMapper.updateVehFlowYshbj(vehZnshinfo.getLsh().substring(0,20),"1");
//                    return 1;
//                }
//
//                //建议人工
//                if (shztList.contains("4")) {
//                    vehZnshinfo.setShzt("4");
//                    vehZnshinfoService.updateVehZnshinfo(vehZnshinfo);
//                    xbjcMapper.updateVehFlowYshbj(vehZnshinfo.getLsh().substring(0,20),"5");
//                    return 4;
//                }
//            }
//            return shzt;
//        }
//
//    }
//
//
//    /**
//     * 判断该图片是否合格  0——未审核 1——通过 4——建议人工 5——不通过
//     *
//     * @return
//     */
//    private int isQualified(String btgjyx) {
//        if (StringUtils.isNotBlank(btgjyx))
//            return 5;
//        else
//            return 1;
//    }
//
//    /**
//     * 获取待检验项中文
//     * @param jyx
//     * @return
//     */
//    private String getZhJyx(String jyx){
//        List<String> returnList = new ArrayList<>();
//        List<String> list = Arrays.asList(jyx.split(","));
//        //list = list.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
//        if (list.size()>0){
//            list.forEach(v->{
//                returnList.add(shItemConfigService.getZhJyx(v));
//            });
//        }
//        return String.join(",",returnList);
//    }
//
//    /**
//     * 根据zpzl匹配不同的grpc审核方法
//     * @param vehQueuexxb 作业数据
//     * @param vehZnshinfo 车辆信息
//     * @param zpurl       车辆照片
//     * @return 不合格的检验项
//     */
//    private String parseGrpc(ShResourcexx shResourcexx,VehQueuexxb vehQueuexxb,VehZnshinfo vehZnshinfo, String zpurl) {
//        String jyx = vehQueuexxb.getJyx();
//        String zpzl = vehQueuexxb.getZpzl();//照片种类
//        boolean isMotor = vehZnshinfo.getCllx().contains("M") || vehZnshinfo.getCllx().contains("N");
//        zpurl = imgPath+zpurl;
//        switch (zpzl) {
//            case "0111"://左前方45度
//            case "0112"://右后方45度
//                return callCheckAppearance(shResourcexx,jyx, vehZnshinfo , zpurl);
//            case "0113"://车架号
//                return callCheckVin(shResourcexx,jyx, vehZnshinfo, zpurl);
//            case "0157"://安全带
//                return callCheckSeatBelt(shResourcexx,jyx,vehZnshinfo, zpurl);
//            case "0201": //行驶证
//                return callCheckVehicleLicense(shResourcexx, jyx, vehZnshinfo, zpurl);//行驶证
//            case "0298"://行驶证背面
//                return callCheckVehicleLicenseBack(shResourcexx,jyx,vehZnshinfo, zpurl);
//            case "0202"://牌证申请表
//                return callCheckLicenseApplicationForm(shResourcexx,jyx, vehZnshinfo, zpurl);
//            case "0203"://交强险保单
//                return callCheckInsurancePolicy(shResourcexx,jyx, vehZnshinfo, zpurl);
//            case "0204"://机动车安全技术检验报告
//                return callCheckInspectionReport(shResourcexx,jyx, vehZnshinfo, zpurl);
//            case "0297"://尾气单1
//                return callCheckExhaustDetectionReport1(shResourcexx,jyx, vehZnshinfo, zpurl);
//            case "0295"://尾气单2?
//                return callCheckExhaustDetectionReport2(shResourcexx,jyx, vehZnshinfo,  zpurl);
//            case "0207"://委托书
//            case "0208"://委托书
//                return callCheckAttorneyLetter(shResourcexx,jyx, vehZnshinfo, zpurl);
//            case "0205"://检验表(人工部分)
//                return callCheckInspectionFormManual(shResourcexx,jyx,vehZnshinfo, zpurl, null);//一张照片
//            case "0286"://检验表仪器部分
//                return callCheckSafetyTechnicalInspectionFormInstrument(shResourcexx,jyx, vehZnshinfo, zpurl);
//            case "0212"://身份证
//                return callCheckIdentificationCard(shResourcexx,jyx, vehZnshinfo, zpurl);
//            case "0321"://左灯光
//            case "0352"://右灯光
//                return callCheckVecicleLights(shResourcexx,jyx, vehZnshinfo, zpurl);
//            case "0322"://一轴制动（滚筒、平板）
//                return callCheckVecicleBrake(shResourcexx,1, jyx, vehZnshinfo, zpurl);
//            case "0348"://二轴制动（滚筒、平板）
//                return callCheckVecicleBrake(shResourcexx,2, jyx, vehZnshinfo, zpurl);
//            case "0351"://驻车制动 （年限>10年）
//            case "A312":
//                return callCheckVecicleBrake(shResourcexx,3, jyx, vehZnshinfo, zpurl);//制动类型 1 一轴制动， 2 二轴制动， 3 驻车制动
//            case "0323"://底盘部件（地沟, 年限>10年）
//                return callCheckChassisInspection(shResourcexx,jyx, vehZnshinfo, zpurl);
//            case "0344"://底盘动态开始（年限>10年）
//                return callCheckChassisDynamics(shResourcexx,jyx, vehZnshinfo, zpurl, null);
//            case "0342"://底盘动态结束（年限>10年）
//                return callCheckChassisDynamics(shResourcexx,jyx, vehZnshinfo, null, zpurl);
//            case "0162"://车辆后背箱(改装气罐)
//                return callCheckGasTank(shResourcexx,jyx,vehZnshinfo,zpurl);
//            case "0116"://灭火器
//                return callCheckFireExtinguisher(shResourcexx,jyx,vehZnshinfo, zpurl);
//            case "0117"://安全锤
//                return callCheckEmergencyHammer(shResourcexx,jyx,vehZnshinfo,zpurl);
//            case "0118"://行驶记录装置
//                return callCheckDriverRecorder(shResourcexx,jyx,vehZnshinfo,zpurl);
//            case "0130"://辅助制动装置
//                return callCheckAuxiliaryBrake(shResourcexx,jyx,vehZnshinfo,zpurl);
//            case "0134"://防抱死制动装置
//                return callCheckAntilockBrakeSystem(shResourcexx,jyx,vehZnshinfo,zpurl);
//            case "0136"://轮胎规格
//                return callCheckTyreSpecification(shResourcexx,jyx,vehZnshinfo,zpurl);
//            case "0114"://车辆铭牌
//                return  callCheckNameplate(shResourcexx,jyx,vehZnshinfo,zpurl);
//            case "0115"://车厢内部
//                return callCheckBusInside(shResourcexx,jyx,vehZnshinfo,zpurl);
//            default:
//                log.info("照片种类"+zpzl+"暂无grpc调用,返回null");
//        }
//        return null;
//    }
//
//    /**
//     * 车辆外观（左前、右后、左前45度标准照片）
//     * @param jyx
//     * @param vehZnshinfo 车辆信息
//     * @param imageUrl    照片url
//     * @return 不通过项和grpc返回（分隔符---） 可能null或""
//     */
//    private String callCheckAppearance(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo,String imageUrl) {
//        CheckAppearanceRequest checkAppearanceRequest = CheckAppearanceRequest.newBuilder()
//                .setPlateAnswer(vehZnshinfo.getHphm())//车辆车牌答案
//                .setBrandAnswer(vehZnshinfo.getClpp1())//车辆品牌答案
//                .setColorAnswer(vehZnshinfo.getCsys())//车辆颜色答案
//                .setViewType(vehQueuexxb.getZpzl().equals("0111") ? CarViewType.FRONTLEFT : CarViewType.BACKRIGHT)
//                .addAllItems(Arrays.asList(jyx.split(",")))
//                .setVehicleThreshold(0.01f)//车辆阈值
//                .setColsData(3f)
//                .setRowsData(8f)
//                .setSourceImage(imageUrl).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckAppearance(jyx, checkAppearanceRequest);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * Vin车架号 0113
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckVin(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckVinRequest checkVinRequest = CheckVinRequest.newBuilder()
//                .setVinAnswer(vehZnshinfo.getClsbdh())
//                .setVinImg(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .setCompareThreshold(compareThreshold)
//                .setVehicleThreshold(0.01f)
//                .setColsData(3f)
//                .setRowsData(8f)
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        //.setVinTymImg()//vin拓印膜图像,找不到
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckVin(jyx,vehZnshinfo.getClsbdh(),checkVinRequest);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 安全带 0157
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckSeatBelt(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckSeatBeltRequest checkSeatBeltRequest = CheckSeatBeltRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .setVehicleThreshold(1)//车辆阈值
//                .setColsData(1.5f)
//                .setRowsData(1.5f)
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckSeatBelt(jyx,checkSeatBeltRequest);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 机动车牌证申请表 0202
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckLicenseApplicationForm(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckLicenseApplicationFormRequest request = CheckLicenseApplicationFormRequest.newBuilder()
//                .setPlateAnswer(vehZnshinfo.getHphm())//grpc不返回车牌号是否正确判断,只返回识别的车牌号，带中文，需自己做识别
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckLicenseApplicationForm(jyx,vehZnshinfo.getFzjg(),request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 交强险保单 0203
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckInsurancePolicy(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckInsurancePolicyRequest request = CheckInsurancePolicyRequest.newBuilder()
//                .setPlateAnswer(vehZnshinfo.getHphm())
//                .setEngineNumberAnswer(vehZnshinfo.getFdjh())
//                .setVinAnswer(vehZnshinfo.getClsbdh())
//                .setStartDate(vehZnshinfo.getSxrq()==null?"":sdf.format(vehZnshinfo.getSxrq()))
//                .setEndDate(vehZnshinfo.getZzrq()==null?"":sdf.format(vehZnshinfo.getZzrq()))
//                .setCurrentDate(sdf.format(new Date()))
//                .setPlateCompareThreshold(compareThreshold)
//                .setVinCompareThreshold(compareThreshold)
//                .setEngineCompareThreshold(compareThreshold)
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckInsurancePolicy(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 行驶证 0201
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return 不通过项 可能null或""
//     */
//    public String callCheckVehicleLicense(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckVehicleLicenseRequest request = CheckVehicleLicenseRequest.newBuilder()
//                .setVinAnswer(vehZnshinfo.getClsbdh())
//                .setPlateAnswer(vehZnshinfo.getHphm())
//                .setPlateCompareThreshold(compareThreshold)
//                .setVinCompareThreshold(compareThreshold)
//                .setLicenseAnswer(StringUtils.isNotBlank(vehZnshinfo.getXszbh())?vehZnshinfo.getXszbh():"")//数据库都为空
//                .setIssueDateAnswer(vehZnshinfo.getFzrq()!=null?sdf2.format(vehZnshinfo.getFzrq()):"")//数据库都为空
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckVehicleLicense(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 机动车安全技术检验报告 0204
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckInspectionReport(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckInspectionReportRequest request = CheckInspectionReportRequest.newBuilder()
//                .setPlateAnswer(vehZnshinfo.getHphm())
//                .setVinAnswer(vehZnshinfo.getClsbdh())
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckInspectionReport(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 尾气单1 0296
//     * @param jyx
//     * @param znshinfo
//     * @param imageUrl
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckExhaustDetectionReport1(ShResourcexx shResourcexx,String jyx, VehZnshinfo znshinfo, String imageUrl) {
//        CheckExhaustDetectionReportRequest request = CheckExhaustDetectionReportRequest.newBuilder()
//                .setSourceImage1(ByteString.copyFrom(urlTobyte(imageUrl,znshinfo,shResourcexx)))
//                .setPlateAnswer(znshinfo.getHphm())
//                .setVinAnswer(znshinfo.getClsbdh())
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckExhaustDetectionReport(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//    /**
//     * 尾气单2 0295
//     * @param jyx
//     * @param znshinfo
//     * @param imageUrl
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckExhaustDetectionReport2(ShResourcexx shResourcexx,String jyx, VehZnshinfo znshinfo, String imageUrl) {
//        CheckExhaustDetectionReportRequest request = CheckExhaustDetectionReportRequest.newBuilder()
//                .setSourceImage2(ByteString.copyFrom(urlTobyte(imageUrl,znshinfo,shResourcexx)))
//                .setPlateAnswer(znshinfo.getHphm())
//                .setVinAnswer(znshinfo.getClsbdh())
//                .setVinCompareThreshold(compareThreshold)
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckExhaustDetectionReport(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 左、右灯光 0321 0352
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckVecicleLights(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckVecicleLightsRequest request = CheckVecicleLightsRequest.newBuilder()
//                .setPlateAnswer(vehZnshinfo.getHphm())
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .setColorAnswer(vehZnshinfo.getCsys())
//                .setMPlateCompareThreshold(compareThreshold)
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckVecicleLights(jyx,vehZnshinfo.getHphm(), request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 一轴、二轴（平板制动）、 一轴、二轴（滚筒制动）、驻车制动 0322 0348 0351
//     * @param brakeType 制动类型 1 一轴制动， 2 二轴制动， 3 驻车制动
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckVecicleBrake(ShResourcexx shResourcexx,Integer brakeType,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckVecicleBrakeRequest request = CheckVecicleBrakeRequest.newBuilder()
//                .setBrakeType(brakeType)
//                .setPlateAnswer(vehZnshinfo.getHphm())
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .setColorAnswer(vehZnshinfo.getCsys())
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckVecicleBrake(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 底盘检验 0323
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckChassisInspection(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckChassisInspectionRequest request = CheckChassisInspectionRequest.newBuilder()
//                .setPlateAnswer(vehZnshinfo.getHphm())
//                .setPlateCompareThreshold(compareThreshold)
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckChassisInspection(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 底盘动态(开始、结束) 0344 0342
//     * @param jyx
//     * @param vehZnshinfo
//     * @param beginImageUrl
//     * @param endImageUrl
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckChassisDynamics(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String beginImageUrl, String endImageUrl) {
//        CheckChassisDynamicsRequest request = null;
//        //底盘动态结束
//        if (beginImageUrl == null){
//            request = CheckChassisDynamicsRequest.newBuilder()
//                    .setPlateAnswer(vehZnshinfo.getHphm())
//                    .setPlateCompareThreshold(compareThreshold)
//                    .setSourceEndImage(ByteString.copyFrom(urlTobyte(endImageUrl,vehZnshinfo,shResourcexx)))
//                    .addAllItems(Arrays.asList(jyx.split(","))).build();
//        }
//        //底盘动态开始
//        if (endImageUrl == null){
//            request = CheckChassisDynamicsRequest.newBuilder()
//                    .setPlateAnswer(vehZnshinfo.getHphm())
//                    .setPlateCompareThreshold(compareThreshold)
//                    .setSourceBeginImage(ByteString.copyFrom(urlTobyte(beginImageUrl,vehZnshinfo,shResourcexx)))
//                    .addAllItems(Arrays.asList(jyx.split(","))).build();
//        }
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckChassisDynamics(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    //人脸比对
//    //private String callCheckFaceCompare(){}
//
//    /**
//     * 委托书 0208
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckAttorneyLetter(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckAttorneyLetterRequest request = CheckAttorneyLetterRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .setVinAnswer(vehZnshinfo.getClsbdh())
//                .setPlateNumberAnswer(vehZnshinfo.getHphm())
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckAttorneyLetter(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 安全技术检验表人工部分 0212 0213
//     * @param jyx
//     * @param imageUrl1
//     * @param imageUrl2
//     * @return 不通过项 可能null或""
//     */
//    private String callCheckInspectionFormManual(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo, String imageUrl1, String imageUrl2) {
//        CheckInspectionFormManualRequest request = CheckInspectionFormManualRequest.newBuilder()
//                .setSourceImage(imageUrl1 == null ? ByteString.copyFrom(new byte[0]) : ByteString.copyFrom(urlTobyte(imageUrl1,vehZnshinfo,shResourcexx)))
//                .setSecondImage(imageUrl2 == null ? ByteString.copyFrom(new byte[0]) : ByteString.copyFrom(urlTobyte(imageUrl2,vehZnshinfo,shResourcexx)))
//                .setPlateNumberAnswer(vehZnshinfo.getHphm())
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckInspectionFormManual(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 检验过程记录人存在 无
//     * @param jyx
//     * @param imageUrl
//     * @return
//     */
///*    private String callCheckInspectionRecordPerson(String jyx,String imageUrl){
//        CheckInspectionRecordPersonRequest request = CheckInspectionRecordPersonRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = jianyanService.CheckInspectionRecordPerson(jyx,request);
//        return btgjyx;
//    }*/
//
//    /**
//     * 身份证 A202
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return
//     */
//    private String callCheckIdentificationCard(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckIdentificationCardRequest request = CheckIdentificationCardRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                //.setIdCardNameAnswer(vehZnshinfo.getSyr())
//                //.setIdCardNumberAnswer()
//                .setCurrentDate(sdf.format(new Date()))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckIdentificationCard(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 改装气罐 无
//     * @param jyx
//     * @param imageUrl
//     * @return
//     */
//    private String callCheckGasTank(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo,String imageUrl){
//        CheckGasTankRequest request = CheckGasTankRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckGasTank(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 灭火器 0116
//     * @param jyx
//     * @param imageUrl
//     * @return
//     */
//    private String callCheckFireExtinguisher(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo,String imageUrl){
//        CheckFireExtinguisherRequest request = CheckFireExtinguisherRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckFireExtinguisher(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 安全锤 0117
//     * @param jyx
//     * @param imageUrl
//     * @return
//     */
//    private String callCheckEmergencyHammer(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo,String imageUrl){
//        CheckEmergencyHammerRequest request = CheckEmergencyHammerRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckEmergencyHammer(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 行驶记录装置 0118
//     * @param jyx
//     * @param imageUrl
//     * @return
//     */
//    private String callCheckDriverRecorder(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo,String imageUrl){
//        CheckDriverRecorderRequest request = CheckDriverRecorderRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckDriverRecorder(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 辅助制动装置 0130
//     * @param jyx
//     * @param imageUrl
//     * @return
//     */
//    private String callCheckAuxiliaryBrake(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo,String imageUrl){
//        CheckAuxiliaryBrakeRequest request = CheckAuxiliaryBrakeRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckAuxiliaryBrake(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 防抱死制动装置 0134
//     * @param jyx
//     * @param imageUrl
//     * @return
//     */
//    private String callCheckAntilockBrakeSystem(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo,String imageUrl){
//        CheckAntilockBrakeSystemRequest request = CheckAntilockBrakeSystemRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckAntilockBrakeSystem(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 轮胎规格 0136
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return
//     */
//    private String callCheckTyreSpecification(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo,String imageUrl){
//        CheckTyreSpecificationRequest request = CheckTyreSpecificationRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .setTyreSpecificationAnswer(vehZnshinfo.getLtgg())//轮胎规格答案
//                .setTiresizeCompareThreshold(compareThreshold)
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckTyreSpecification(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 行驶证背面 0256 0224
//     * @param jyx
//     * @param imageUrl
//     * @return
//     */
//    private String callCheckVehicleLicenseBack(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo,String imageUrl){
//        CheckVehicleLicenseBackRequest request = CheckVehicleLicenseBackRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .setVehicleLicenseColorAnswer(vehZnshinfo.getCsys())//车身颜色答案
//                .setVehicleLicenseLogoAnswer(vehZnshinfo.getClpp1())//车标答案
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckVehicleLicenseBack(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 检验表仪器部分 0261
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return
//     */
//    private String callCheckSafetyTechnicalInspectionFormInstrument(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo, String imageUrl){
//        CheckSafetyTechnicalInspectionFormInstrumentRequest request = CheckSafetyTechnicalInspectionFormInstrumentRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .setPlateAnswer(vehZnshinfo.getHphm())
//                .setVinAnswer(vehZnshinfo.getClsbdh())
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckSafetyTechnicalInspectionFormInstrument(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 发动机
//     * @param jyx
//     * @param vehZnshinfo
//     * @param imageUrl
//     * @return
//     */
//    private String callCheckEngineNumber(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo, String imageUrl){
//        CheckEngineNumberRequest request = CheckEngineNumberRequest.newBuilder()
//                .setEngineImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))//发动机号图像
//                //.setRubbingEngineImage()//发动机号拓印膜图像
//                .setEngineModelAnswer(vehZnshinfo.getFdjxh())//发动机型号
//                .setEngineAnswer(vehZnshinfo.getFdjh())//发动机编号
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckEngineNumber(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    private String callCheckIdentificationCardCopy(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo, String imageUrl){
//        CheckIdentificationCardCopyRequest request = CheckIdentificationCardCopyRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckIdentificationCardCopy(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 营业执照
//     */
//    private String callCheckBusinessLicense(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo, String imageUrl){
//        CheckBusinessLicenseRequest request = CheckBusinessLicenseRequest.newBuilder()
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckBusinessLicense(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 检查摩托左前右后外观
//     */
//    private String callCheckMotorAppearance(ShResourcexx shResourcexx,String jyx,VehZnshinfo vehZnshinfo, String imageUrl){
//        CheckMotorAppearanceRequest request = CheckMotorAppearanceRequest.newBuilder()
//                .setImg(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .setMotorDirection(vehQueuexxb.getZpzl().equals("0111") ? CarViewType.FRONTLEFT : CarViewType.BACKRIGHT)
//                .setPlateAnswer(vehZnshinfo.getHphm())
//                .setMotorLogoAnswer(vehZnshinfo.getClpp1())
//                .setMotorColorAnswer(vehZnshinfo.getCsys())
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckMotorAppearance(jyx,request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//
//    /**
//     * /检查摩托灯光
//     */
//    private String callCheckMotorLights(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckMotorLightRequest request = CheckMotorLightRequest.newBuilder()
//                .setPlateAnswer(vehZnshinfo.getHphm())
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckMotorLights(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//
//    /**
//     * 检查摩托底盘动态
//     */
//    private String callCheckMotorChassisDynamics(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckMotorChassisDynamicsRequest request = CheckMotorChassisDynamicsRequest.newBuilder()
//                .setPlateAnswer(vehZnshinfo.getHphm())
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckMotorChassisDynamics(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//
//    /**
//     * 检查摩托一轴、二轴、驻车制动
//     */
//    private String callCheckMotorBrake(ShResourcexx shResourcexx,Integer brakeType,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckMotorBrakeRequest request = CheckMotorBrakeRequest.newBuilder()
//                .setBrakeType(brakeType)
//                .setPlateAnswer(vehZnshinfo.getHphm())
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .setColorAnswer(vehZnshinfo.getCsys())
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckMotorBrake(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 检查铭牌
//     */
//    private String callCheckNameplate(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckNameplateRequest request = CheckNameplateRequest.newBuilder()
//                .setCarBrandsAnswer(vehZnshinfo.getClpp1())
//                .setCarModelAnswer(vehZnshinfo.getClxh())
//                .setEngineModelAnswer(vehZnshinfo.getFdjh())
//                .setManufactureDateAnswer(vehZnshinfo.getCcdjrq()==null?"":sdf.format(vehZnshinfo.getCcdjrq()))
//                //.setManufactureCountryAnswer("")
//                .setDisplacementAnswer(vehZnshinfo.getPl())
//                .setTotalQualityAnswer(String.valueOf(Integer.valueOf(vehZnshinfo.getZzl())))
//                .setVinAnswer(vehZnshinfo.getClsbdh())
//                .setManufactureNameAnswer(vehZnshinfo.getZzcmc())
//                .setPassengerNumberAnswer(String.valueOf(vehZnshinfo.getHdzk()))
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .setVehicleTypeAnswer(vehZnshinfo.getCllx())
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckNameplate(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 检车车厢内部
//     */
//    private String callCheckVanInside(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckVanInsideRequest request = CheckVanInsideRequest.newBuilder()
//                .setVehicleTypeAnswer(vehZnshinfo.getCllx())
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckVanInside(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//    /**
//     * 检查座位数和安全带 0115
//     */
//    private String callCheckBusInside(ShResourcexx shResourcexx,String jyx, VehZnshinfo vehZnshinfo, String imageUrl) {
//        CheckBusInsideRequest request = CheckBusInsideRequest.newBuilder()
//                .setVehicleTypeAnswer(vehZnshinfo.getCllx())
//                .setSourceImage(ByteString.copyFrom(urlTobyte(imageUrl,vehZnshinfo,shResourcexx)))
//                .addAllItems(Arrays.asList(jyx.split(","))).build();
//        String btgjyx = "";
//        try {
//            btgjyx = jianyanService.CheckBusInside(jyx, request);
//        }catch (StatusRuntimeException e){
//            log.error("grpc调用失败:",e);
//            return "-1";
//        }
//        return btgjyx;
//    }
//
//
//    /**
//     * 写进异常信息表
//     */
//    private void insertShYcrzxxb(String lsh,ShResourcexx shResourcexx,String exInfo){
//        ShYcrzxxb shYcrzxxb = new ShYcrzxxb();
//        shYcrzxxb.setLsh(lsh);
//        shYcrzxxb.setIpdz(shResourcexx.getIpdz());
//        shYcrzxxb.setDkh(shResourcexx.getDkh());
//        shYcrzxxb.setCjsj(new Date());
//        shYcrzxxb.setYcnr(exInfo);
//        shYcrzxxbMapper.insert(shYcrzxxb);
//    }
//
//    /**
//     * url转bytes
//     * @param url
//     * @return
//     */
//    public byte[] urlTobyte(String url,VehZnshinfo vehZnshinfo,ShResourcexx shResourcexx){
//        byte[] bytes = new byte[0];
//        URL ur = null;
//        try {
//            ur = new URL(url);
//        } catch (MalformedURLException e) {
//            e.printStackTrace();
//            throw new GlobalException("格式错误的URL异常");
//        }
//        BufferedInputStream in = null;
//        ByteArrayOutputStream out = null;
//        try {
//            in = new BufferedInputStream(ur.openStream());
//            out = new ByteArrayOutputStream(1024);
//            byte[] temp = new byte[1024];
//            int size = 0;
//            while ((size = in.read(temp)) != -1) {
//                out.write(temp, 0, size);
//            }
//        }
//        catch (Exception e) {
//            log.error("照片地址："+url+"可能访问出错！-->",e);
//            //todo 清除该lsh作业的数据，并将车辆的yczt置为1
//            synchronized (WorkCustomer2.class){
//                vehQueuexxbService.delWork(vehZnshinfo.getLsh());
//                vehZnshinfo.setYczt("1");//置为异常状态
//                vehZnshinfoService.updateVehZnshinfo(vehZnshinfo);
//                //将服务器改为空闲状态
//                shResourcexx.setSfkx("1");
//                shResourcexxService.updateResourcexx(shResourcexx);
//                return bytes;
//            }
//        } finally {
//            try {
//                in.close();
//            } catch (IOException e) {
//                e.printStackTrace();
//                return bytes;
//            }
//        }
//        byte[] content = out.toByteArray();
//
//        if (out!=null) {
//            try {
//                out.close();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//        return content;
//    }
//
//    /**
//     * 处理服务器挂了之后
//     * @param vehQueuexxb
//     * @param shResourcexx
//     */
//    void todoServiceExCeption(VehQueuexxb vehQueuexxb,ShResourcexx shResourcexx){
//        synchronized (WorkCustomer2.class){
//            //算法服务器挂了，将该算法服务器zt改成异常，该条作业审核状态重置为0，已让它下次能重新审
//            shResourcexx.setZt("0");//异常
//            shResourcexxService.updateResourcexx(shResourcexx);
//            vehQueuexxb.setZt("0");//未审核
//            vehQueuexxbService.updateVehQueuexxb(vehQueuexxb);
//        }
//    }
//
//
//    /**
//     * 0111-0112-关联三角架
//     * @param lsh
//     * @return 0111-0112的shzt列表
//     */
//    private Map<String,String> tripodHandle(String lsh){
//        log.info("进入【0111-0112关联三角架】");
//        Map<String,String> shztMap = new HashedMap();
//        //0111-0112 任意一张有放三角架就通过
//        VehZnshzlzpxx vehZnshzlzpxx_0111 = vehZnshzlzpxxService.GetVehZnshzlzpxx(lsh,"0111");
//        VehZnshzlzpxx vehZnshzlzpxx_0112 = vehZnshzlzpxxService.GetVehZnshzlzpxx(lsh,"0112");
//        String tripod = "[三角架-是否存在]";
//        String shzt_0111 = vehZnshzlzpxx_0111==null?"":vehZnshzlzpxx_0111.getShzt();
//        String shzt_0112 = vehZnshzlzpxx_0112==null?"":vehZnshzlzpxx_0112.getShzt();
//
//        if (vehZnshzlzpxx_0111!=null && vehZnshzlzpxx_0112!=null){//有这两种照片,并且都开启了三角架配置，就需要关联三角架
//            //null.contains会报空指针异常，需先转换
//            String shbtgyy_0111 = vehZnshzlzpxx_0111.getShbtgyy()==null?"":vehZnshzlzpxx_0111.getShbtgyy();
//            String shbtgyy_0112 = vehZnshzlzpxx_0112.getShbtgyy()==null?"":vehZnshzlzpxx_0112.getShbtgyy();
//
//            List<String> shbtgyy_0111_list = StringUtils.isNotBlank(shbtgyy_0111)?Arrays.asList(shbtgyy_0111.split(",")):new ArrayList<>();
//            List<String> shbtgyy_0112_list = StringUtils.isNotBlank(shbtgyy_0112)?Arrays.asList(shbtgyy_0112.split(",")):new ArrayList<>();
//
//            String jyx_0111 = vehZnshzlzpxx_0111.getJyx()==null?"":vehZnshzlzpxx_0111.getJyx();
//            String jyx_0112 = vehZnshzlzpxx_0112.getJyx()==null?"":vehZnshzlzpxx_0112.getJyx();
//
//            if (jyx_0111.contains("jy_001_002") && jyx_0112.contains("jy_002_002")){//是否都开启了三脚架检验配置
//                //重新修正版本 2022-05-13
//                if ((shbtgyy_0111.contains(tripod) && !shbtgyy_0112.contains(tripod))){
//                    //shbtgyy_0111去除[三角架-是否存在]
//                    shbtgyy_0111_list = shbtgyy_0111_list.stream().filter( v-> !tripod.equals(v)).collect(Collectors.toList());
//                }
//                if (!shbtgyy_0111.contains(tripod) && shbtgyy_0112.contains(tripod)){
//                    //shbtgyy_0112去除[三角架-是否存在]
//                    shbtgyy_0112_list = shbtgyy_0112_list.stream().filter( v-> !tripod.equals(v)).collect(Collectors.toList());
//                }
//                shzt_0111 = shbtgyy_0111_list.size()==0?"1":"5";
//                shzt_0112 = shbtgyy_0112_list.size()==0?"1":"5";
//                //todo 修改关联照片的shzt为处理后的结果以及去除审核不通过原因的关联检验项
//                vehZnshzlzpxxService.updateLinkedShzt(lsh,shzt_0111,String.join(",",shbtgyy_0111_list),"0111");
//                vehZnshzlzpxxService.updateLinkedShzt(lsh,shzt_0112,String.join(",",shbtgyy_0112_list),"0112");
//            }
//        }
//        if (StringUtils.isNotBlank(shzt_0111))
//            shztMap.put("0111",shzt_0111);//加入已经处理过的0111判断结果
//        if (StringUtils.isNotBlank(shzt_0112))
//            shztMap.put("0112",shzt_0112);//加入已经处理过的0112判断结果
//        log.info("出来【0111-0112关联三角架】");
//        return shztMap;
//    }
//
//    /**
//     * 0348-0322-关联尾灯
//     * @param lsh
//     * @return 0348-0322的shzt列表
//     */
//    private Map<String,String> taillightHandle(String lsh){
//        log.info("进入【0348-0322关联尾灯】");
//        Map<String,String> shztMap = new HashedMap();
//        //0348-0322 任意一张尾灯亮就通过
//        VehZnshzlzpxx vehZnshzlzpxx_0348 = vehZnshzlzpxxService.GetVehZnshzlzpxx(lsh,"0348");
//        VehZnshzlzpxx vehZnshzlzpxx_0322 = vehZnshzlzpxxService.GetVehZnshzlzpxx(lsh,"0322");
//        String taillight = "[尾灯-是否亮起]";
//        String shzt_0348 = vehZnshzlzpxx_0348==null?"":vehZnshzlzpxx_0348.getShzt();
//        String shzt_0322 = vehZnshzlzpxx_0322==null?"":vehZnshzlzpxx_0322.getShzt();
//
//        if (vehZnshzlzpxx_0348!=null && vehZnshzlzpxx_0322!=null){//有这两种照片,并且都开启了尾灯配置，就需要关联尾灯
//            //null.contains会报空指针异常，需先转换
//            String shbtgyy_0348 = vehZnshzlzpxx_0348.getShbtgyy()==null?"":vehZnshzlzpxx_0348.getShbtgyy();
//            String shbtgyy_0322 = vehZnshzlzpxx_0322.getShbtgyy()==null?"":vehZnshzlzpxx_0322.getShbtgyy();
//
//            List<String> shbtgyy_0348_list = StringUtils.isNotBlank(shbtgyy_0348)?Arrays.asList(shbtgyy_0348.split(",")):new ArrayList<>();
//            List<String> shbtgyy_0322_list = StringUtils.isNotBlank(shbtgyy_0322)?Arrays.asList(shbtgyy_0322.split(",")):new ArrayList<>();
//
//            String jyx_0348 = vehZnshzlzpxx_0348.getJyx()==null?"":vehZnshzlzpxx_0348.getJyx();
//            String jyx_0322 = vehZnshzlzpxx_0322.getJyx()==null?"":vehZnshzlzpxx_0322.getJyx();
//
//            if (jyx_0348.contains("jy_015_003") && jyx_0322.contains("jy_014_003")){//是否都开启了尾灯检验配置
//                //重新修正版本 2022-05-13
//                if ((shbtgyy_0348.contains(taillight) && !shbtgyy_0322.contains(taillight))){
//                    shbtgyy_0348_list = shbtgyy_0348_list.stream().filter( v-> !taillight.equals(v)).collect(Collectors.toList());
//                }
//                if (!shbtgyy_0348.contains(taillight) && shbtgyy_0322.contains(taillight)){
//                    shbtgyy_0322_list = shbtgyy_0322_list.stream().filter( v-> !taillight.equals(v)).collect(Collectors.toList());
//                }
//                shzt_0348 = shbtgyy_0348_list.size()==0?"1":"5";
//                shzt_0322 = shbtgyy_0322_list.size()==0?"1":"5";
//
//                vehZnshzlzpxxService.updateLinkedShzt(lsh,shzt_0348,String.join(",",shbtgyy_0348_list),"0348");
//                vehZnshzlzpxxService.updateLinkedShzt(lsh,shzt_0322,String.join(",",shbtgyy_0322_list),"0322");
//            }
//        }
//        if (StringUtils.isNotBlank(shzt_0348))
//            shztMap.put("0348",shzt_0348);//加入已经处理过的0348判断结果
//        if (StringUtils.isNotBlank(shzt_0322))
//            shztMap.put("0322",shzt_0322);//加入已经处理过的0322判断结果
//        log.info("出来【0348-0322关联尾灯】");
//        return shztMap;
//    }
//
//    /**
//     * 0321-0352-关联车牌号
//     * @param lsh
//     * @return 0321-0352的shzt列表
//     */
//    private Map<String,String> plateHandle(String lsh){
//        log.info("进入【0321-0352关联车牌号】");
//        Map<String,String> shztMap = new HashedMap();
//        //0321-0352 任意一张识别到车牌号就通过
//        VehZnshzlzpxx vehZnshzlzpxx_0321 = vehZnshzlzpxxService.GetVehZnshzlzpxx(lsh,"0321");
//        VehZnshzlzpxx vehZnshzlzpxx_0352 = vehZnshzlzpxxService.GetVehZnshzlzpxx(lsh,"0352");
//        String plate = "[车牌号-与实际值比对]";
//        String shzt_0321 = vehZnshzlzpxx_0321==null?"":vehZnshzlzpxx_0321.getShzt();
//        String shzt_0352 = vehZnshzlzpxx_0352==null?"":vehZnshzlzpxx_0352.getShzt();
//
//        if (vehZnshzlzpxx_0321!=null && vehZnshzlzpxx_0352!=null){//有这两种照片,并且都开启了车牌号配置，就需要关联车牌号
//            //null.contains会报空指针异常，需先转换
//            String shbtgyy_0321 = vehZnshzlzpxx_0321.getShbtgyy()==null?"":vehZnshzlzpxx_0321.getShbtgyy();
//            String shbtgyy_0352 = vehZnshzlzpxx_0352.getShbtgyy()==null?"":vehZnshzlzpxx_0352.getShbtgyy();
//
//            List<String> shbtgyy_0321_list = StringUtils.isNotBlank(shbtgyy_0321)?Arrays.asList(shbtgyy_0321.split(",")):new ArrayList<>();
//            List<String> shbtgyy_0352_list = StringUtils.isNotBlank(shbtgyy_0352)?Arrays.asList(shbtgyy_0352.split(",")):new ArrayList<>();
//
//            String jyx_0321 = vehZnshzlzpxx_0321.getJyx()==null?"":vehZnshzlzpxx_0321.getJyx();
//            String jyx_0352 = vehZnshzlzpxx_0352.getJyx()==null?"":vehZnshzlzpxx_0352.getJyx();
//
//            if (jyx_0321.contains("jy_011_002") && jyx_0352.contains("jy_012_002")){//是否都开启了尾灯检验配置
//                //重新修正版本 2022-05-13
//                if ((shbtgyy_0321.contains(plate) && !shbtgyy_0352.contains(plate))){
//                    shbtgyy_0321_list = shbtgyy_0321_list.stream().filter( v-> !plate.equals(v)).collect(Collectors.toList());
//                }
//                if (!shbtgyy_0321.contains(plate) && shbtgyy_0352.contains(plate)){
//                    shbtgyy_0352_list = shbtgyy_0352_list.stream().filter( v-> !plate.equals(v)).collect(Collectors.toList());
//                }
//                shzt_0321 = shbtgyy_0321_list.size()==0?"1":"5";
//                shzt_0352 = shbtgyy_0352_list.size()==0?"1":"5";
//
//                vehZnshzlzpxxService.updateLinkedShzt(lsh,shzt_0321,String.join(",",shbtgyy_0321_list),"0321");
//                vehZnshzlzpxxService.updateLinkedShzt(lsh,shzt_0352,String.join(",",shbtgyy_0352_list),"0352");
//            }
//        }
//        if (StringUtils.isNotBlank(shzt_0321))
//            shztMap.put("0321",shzt_0321);//加入已经处理过的0321判断结果
//        if (StringUtils.isNotBlank(shzt_0352))
//            shztMap.put("0352",shzt_0352);//加入已经处理过的0352判断结果
//        log.info("出来【0321-0352关联车牌号】");
//        return shztMap;
//    }
//
//    /**
//     * 0321-0352-关联大灯
//     * @param lsh
//     * @return
//     */
//    private Map<String,String> headlightsHandle(String lsh){
//        log.info("进入【0321-0352关联大灯】");
//        Map<String,String> shztMap = new HashedMap();
//        //0321-0352 任意一张识别到车牌号就通过
//        VehZnshzlzpxx vehZnshzlzpxx_0321 = vehZnshzlzpxxService.GetVehZnshzlzpxx(lsh,"0321");
//        VehZnshzlzpxx vehZnshzlzpxx_0352 = vehZnshzlzpxxService.GetVehZnshzlzpxx(lsh,"0352");
//        String headlights = "[左右大灯-是否亮起（两个灯至少要亮一个）]";
//        String shzt_0321 = vehZnshzlzpxx_0321==null?"":vehZnshzlzpxx_0321.getShzt();
//        String shzt_0352 = vehZnshzlzpxx_0352==null?"":vehZnshzlzpxx_0352.getShzt();
//
//        if (vehZnshzlzpxx_0321!=null && vehZnshzlzpxx_0352!=null){//有这两种照片,并且都开启了大灯配置，就需要关联大灯
//            //null.contains会报空指针异常，需先转换
//            String shbtgyy_0321 = vehZnshzlzpxx_0321.getShbtgyy()==null?"":vehZnshzlzpxx_0321.getShbtgyy();
//            String shbtgyy_0352 = vehZnshzlzpxx_0352.getShbtgyy()==null?"":vehZnshzlzpxx_0352.getShbtgyy();
//
//            List<String> shbtgyy_0321_list = StringUtils.isNotBlank(shbtgyy_0321)?Arrays.asList(shbtgyy_0321.split(",")):new ArrayList<>();
//            List<String> shbtgyy_0352_list = StringUtils.isNotBlank(shbtgyy_0352)?Arrays.asList(shbtgyy_0352.split(",")):new ArrayList<>();
//
//            String jyx_0321 = vehZnshzlzpxx_0321.getJyx()==null?"":vehZnshzlzpxx_0321.getJyx();
//            String jyx_0352 = vehZnshzlzpxx_0352.getJyx()==null?"":vehZnshzlzpxx_0352.getJyx();
//
//            if (jyx_0321.contains("jy_011_001") && jyx_0352.contains("jy_012_001")){//是否都开启了大灯检验配置
//                if ((shbtgyy_0321.contains(headlights) && !shbtgyy_0352.contains(headlights))){
//                    shbtgyy_0321_list = shbtgyy_0321_list.stream().filter( v-> !headlights.equals(v)).collect(Collectors.toList());
//                }
//                if (!shbtgyy_0321.contains(headlights) && shbtgyy_0352.contains(headlights)){
//                    shbtgyy_0352_list = shbtgyy_0352_list.stream().filter( v-> !headlights.equals(v)).collect(Collectors.toList());
//                }
//                shzt_0321 = shbtgyy_0321_list.size()==0?"1":"5";
//                shzt_0352 = shbtgyy_0352_list.size()==0?"1":"5";
//
//                vehZnshzlzpxxService.updateLinkedShzt(lsh,shzt_0321,String.join(",",shbtgyy_0321_list),"0321");
//                vehZnshzlzpxxService.updateLinkedShzt(lsh,shzt_0352,String.join(",",shbtgyy_0352_list),"0352");
//            }
//        }
//        if (StringUtils.isNotBlank(shzt_0321))
//            shztMap.put("0321",shzt_0321);//加入已经处理过的0321判断结果
//        if (StringUtils.isNotBlank(shzt_0352))
//            shztMap.put("0352",shzt_0352);//加入已经处理过的0352判断结果
//        log.info("出来【0321-0352关联大灯】");
//        return shztMap;
//    }
//
//
//    /**
//     * 0342-0344-关联动态开始和结束车牌号
//     * @param lsh
//     * @return
//     */
//    private Map<String,String> dynamicHandle(String lsh){
//        log.info("进入【0342-0344关联车牌号】");
//        Map<String,String> shztMap = new HashedMap();
//        //0342-0344 任意一张识别到车牌号就通过
//        VehZnshzlzpxx vehZnshzlzpxx_0342 = vehZnshzlzpxxService.GetVehZnshzlzpxx(lsh,"0342");
//        VehZnshzlzpxx vehZnshzlzpxx_0344 = vehZnshzlzpxxService.GetVehZnshzlzpxx(lsh,"0344");
//        String dynamic = "[车牌号码-与实际值比对]";
//        String shzt_0342 = vehZnshzlzpxx_0342==null?"":vehZnshzlzpxx_0342.getShzt();
//        String shzt_0344 = vehZnshzlzpxx_0344==null?"":vehZnshzlzpxx_0344.getShzt();
//
//        if (vehZnshzlzpxx_0342!=null && vehZnshzlzpxx_0344!=null){//有这两种照片,并且都开启了车牌号识别配置，就需要关联车牌号
//            //null.contains会报空指针异常，需先转换
//            String shbtgyy_0342 = vehZnshzlzpxx_0342.getShbtgyy()==null?"":vehZnshzlzpxx_0342.getShbtgyy();
//            String shbtgyy_0344 = vehZnshzlzpxx_0344.getShbtgyy()==null?"":vehZnshzlzpxx_0344.getShbtgyy();
//
//            List<String> shbtgyy_0342_list = StringUtils.isNotBlank(shbtgyy_0342)?Arrays.asList(shbtgyy_0342.split(",")):new ArrayList<>();
//            List<String> shbtgyy_0344_list = StringUtils.isNotBlank(shbtgyy_0344)?Arrays.asList(shbtgyy_0344.split(",")):new ArrayList<>();
//
//            String jyx_0342 = vehZnshzlzpxx_0342.getJyx()==null?"":vehZnshzlzpxx_0342.getJyx();
//            String jyx_0344 = vehZnshzlzpxx_0344.getJyx()==null?"":vehZnshzlzpxx_0344.getJyx();
//
//            if (jyx_0342.contains("jy_084_001") && jyx_0344.contains("jy_083_001")){//是否都开启了大灯检验配置
//                if ((shbtgyy_0342.contains(dynamic) && !shbtgyy_0344.contains(dynamic))){
//                    shbtgyy_0342_list = shbtgyy_0342_list.stream().filter( v-> !dynamic.equals(v)).collect(Collectors.toList());
//                }
//                if (!shbtgyy_0342.contains(dynamic) && shbtgyy_0344.contains(dynamic)){
//                    shbtgyy_0344_list = shbtgyy_0344_list.stream().filter( v-> !dynamic.equals(v)).collect(Collectors.toList());
//                }
//                shzt_0342 = shbtgyy_0342_list.size()==0?"1":"5";
//                shzt_0344 = shbtgyy_0344_list.size()==0?"1":"5";
//
//                vehZnshzlzpxxService.updateLinkedShzt(lsh,shzt_0342,String.join(",",shbtgyy_0342_list),"0342");
//                vehZnshzlzpxxService.updateLinkedShzt(lsh,shzt_0344,String.join(",",shbtgyy_0344_list),"0344");
//            }
//        }
//        if (StringUtils.isNotBlank(shzt_0342))
//            shztMap.put("0342",shzt_0342);//加入已经处理过的0342判断结果
//        if (StringUtils.isNotBlank(shzt_0344))
//            shztMap.put("0344",shzt_0344);//加入已经处理过的0344判断结果
//        log.info("出来【0342-0344关联车牌号】");
//        return shztMap;
//    }
//
//}